#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
问题1：统计分析志愿者的活动情况
根据加速度记录数据，统计汇总附件1中各个志愿者的身体活动信息。
"""

import os
import sys

# 将代码目录添加到路径
current_dir = os.path.dirname(os.path.abspath(__file__))
code_dir = os.path.join(current_dir, "code")
sys.path.append(code_dir)

# 从code目录导入ActivityMonitor类
try:
    from res import ActivityMonitor
    print("成功导入ActivityMonitor类")
except ImportError as e:
    print(f"导入ActivityMonitor类失败: {e}")
    print(f"Python路径: {sys.path}")
    sys.exit(1)

def main():
    print("\n" + "="*60)
    print("   问题1：统计分析志愿者的身体活动情况")
    print("="*60)
    
    # 文件路径
    file_dir = os.path.join(current_dir, "file")
    attachment_path = os.path.join(file_dir, "附件1")
    
    print(f"当前工作目录: {os.getcwd()}")
    print(f"数据路径: {attachment_path}")
    
    # 检查附件1是文件还是文件夹
    if os.path.exists(attachment_path):
        if os.path.isdir(attachment_path):
            print(f"检测到附件1是一个文件夹，将处理文件夹中的所有数据文件")
            # 检查文件夹中是否有CSV文件
            csv_files = [f for f in os.listdir(attachment_path) if f.endswith('.csv')]
            if not csv_files:
                print(f"错误: 附件1文件夹中没有CSV文件")
                return
            print(f"附件1文件夹中找到以下文件: {csv_files}")
        else:
            print(f"检测到附件1是一个文件")
    else:
        # 尝试附件1.csv
        attachment_path = os.path.join(file_dir, "附件1.csv")
        if not os.path.exists(attachment_path):
            print(f"\n错误: 找不到数据源")
            print(f"请确保以下路径之一存在:")
            print(f"1. {os.path.join(file_dir, '附件1')} (文件夹)")
            print(f"2. {os.path.join(file_dir, '附件1.csv')} (文件)")
            print("\n您可以运行「准备数据.bat」创建示例数据")
            return
        print(f"找到附件1.csv文件")
    
    # 创建活动监测器
    monitor = ActivityMonitor()
    
    # 执行统计分析
    output_file = os.path.join(current_dir, "result_1.xlsx")
    
    print("\n正在分析志愿者活动数据，请稍候...")
    print("根据MET值判断活动强度:")
    print("  * MET值≥6.0 为高强度")
    print("  * 3.0≤MET值<6.0 为中等强度")
    print("  * 1.6≤MET值<3.0 为低强度")
    print("  * 1.0≤MET值<1.6 为静态活动")
    print("  * MET值<1 为睡眠")
    
    result = monitor.analyze_volunteer_activity(input_path=attachment_path, output_file=output_file)
    
    if result is not None:
        print("\n分析完成！")
        print(f"\n统计结果示例（前5行）:")
        print(result.head().to_string(index=False))
        print(f"\n结果已保存到: {output_file}")
        print("表格包含以下列:")
        print("  - 志愿者ID")
        print("  - 记录总时长（小时）")
        print("  - 睡眠总时长（小时）")
        print("  - 高等强度运动总时长（小时）")
        print("  - 中等强度运动总时长（小时）")
        print("  - 低等强度运动总时长（小时）")
        print("  - 静态活动总时长（小时）")
        print("\n所有数值均已保留小数点后4位")
    else:
        print("\n统计分析失败，请检查数据文件格式是否正确。")

if __name__ == "__main__":
    try:
        main()
    except Exception as e:
        print(f"\n程序运行出错: {e}")
    
    print("\n按回车键退出...")
    input() 